﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ModeloEntidades;

namespace AccesoDatos.DAO
{
    class DAO_Titulos : DAO_Base
    {
        // Atributos de manejo de instancia (singleton)
        static DAO_Titulos instance = null;
        //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        // Atributos para acceso a los DataSet Tipados
        private Modelos.ModeloEntidades_externas.colegio_clientes_titulosDataTable colegio_clientes_titulo_Tabla = new Modelos.ModeloEntidades_externas.colegio_clientes_titulosDataTable();
        private Modelos.ModeloEntidades_externasTableAdapters.colegio_clientes_titulosTableAdapter colegio_clientes_TableAdapter = new Modelos.ModeloEntidades_externasTableAdapters.colegio_clientes_titulosTableAdapter();

        public static DAO_Titulos Instance
        {
            get
            {
                if (instance == null)
                {
                    lock (padlock)
                    {
                        if (instance == null)
                        {
                            instance = new DAO_Titulos();
                        }
                    }
                }
                return instance;
            }
        }

        public DAO_Titulos()
        {
        }

        public List<Titulo> obtener(string codigo_profesional)
        {
            // Cargo los profesionales de la db de clientes del colegio
            colegio_clientes_titulo_Tabla = colegio_clientes_TableAdapter.obtener_por_codigoProfesional(codigo_profesional);
            
            // Finalmente devuelvo la lista de EmpresasCargadas            
            return recolectarMuchos();
        }


        private Titulo recolectarUno()
        {
            Titulo unTitulo = new Titulo();
            //---------------------------------------------------------------------------------
            unTitulo.codigo = colegio_clientes_titulo_Tabla[0].cod_titulo;
            unTitulo.nombre = colegio_clientes_titulo_Tabla[0].titulo;
            unTitulo.fecha  = colegio_clientes_titulo_Tabla[0].fec_titulo;
            //-------------------------------------------------------------------------------
            return unTitulo;
        }

        private List<Titulo> recolectarMuchos()
        {
            /// Creo la lista para recolectar y devolver las Empresas cargadas de la db
            List<Titulo> titulos = new List<Titulo>();
            //-----------------------------------------------------------------------------------------------------------------
            // Recorro los profesionales de la tabla
            foreach (Modelos.ModeloEntidades_externas.colegio_clientes_titulosRow unCliente_fila in colegio_clientes_titulo_Tabla)
            {
                ModeloEntidades.Titulo nuevoTitulo = new ModeloEntidades.Titulo();
                //---------------------------------------------------------------------------------
                nuevoTitulo.nombre = unCliente_fila.titulo;
                nuevoTitulo.codigo = unCliente_fila.cod_titulo;
                nuevoTitulo.fecha  = unCliente_fila.fec_titulo;              
                //-------------------------------------------------------------------------------        
            }
            //-----------------------------------------------------------------------------------------------------------------
            return titulos;
        }

    }
}
